jjzjj

C++ 下溢和上溢

全部标签

Swift:如何禁用函数的整数溢出/下溢陷阱

我正在将一些旧的C代码导入到一个swift项目中,并将其移植到纯swift代码中。其中一些进行“加密”,其中它会做类似的事情leta=UInt8(x)//e.g.30letb=a-237在C中,这只是下溢和回绕,这对于这个特定的函数来说很好。在swift中,这会触发fatalError并以EXC_BAD_INSTRUCTION终止我的程序,因为swift默认情况下旨在捕获整数溢出/下溢。我知道我可以通过使用-Ofast进行编译在整个项目级别关闭此检查,但我真的很想关闭这一行代码(或者可能只是特定函数)的溢出检查本身)。注意:我特别想保留C函数的行为,而不仅仅是提升到Int32或Int6

java - 科学计算中如何处理下溢?

我正在研究概率模型,在对这些模型进行推理时,估计的概率可能会变得非常小。为了避免下溢,我目前在日志域中工作(我存储概率的日志)。乘以概率等同于加法,求和使用公式:log(exp(a)+exp(b))=log(exp(a-m)+exp(b-m))+m其中m=max(a,b)。我使用一些非常大的矩阵,我必须采用这些矩阵的逐元素指数来计算矩阵vector乘法。这一步非常昂贵,我想知道在处理概率时是否还有其他方法来处理下溢。编辑:出于效率原因,我正在寻找一种使用原始类型而不是存储实数的任意精度表示的对象的解决方案。编辑2:我正在寻找比日志域技巧更快的解决方案,而不是更准确的解决方案。我对目前获

javascript - 在固定高度的 y 轴上溢出滚动

我有一个看似简单的问题是:​我在一个容器中有3个div:A和B具有固定的高度。C必须有一个可扩展的高度,它随着容器的高度而扩展。如果C中的内容太大,我希望C滚动,但让A和B保持在同一个位置。代码在:http://jsfiddle.net/V2c9G/我做不到。我试过:​没有成功。容器div应该随浏览器调整大小。一个复杂的例子是http://www.sencha.com/examples/#overview(我说的是布局,让浏览器变小,你会看到在标题保持固定的情况下出现滚动)但这不是解决方案,因为它使用JS重新计算高度。有什么想法吗? 最佳答案

html - 为什么 "overflow-y:hidden"会影响在 x 轴上溢出的元素的可见性?

考虑这个例子:http://jsfiddle.net/treeface/P8JbW/HTML:CSS:#test{position:relative;margin-left:50px;margin-top:50px;border:1pxsolidblack;height:50px;width:50px;overflow-x:visible;overflow-y:hidden;}img{position:absolute;left:-11px;}我期待看到这个:但是我得到了这个:这里好像override了overflow-x属性。这是实际发生的事情吗?假设我必须将overflow-y设置

linux - 缓冲区在 64 位上溢出

为了好玩,我正在尝试做一些缓冲区溢出实验。我正在这个论坛上阅读有关该主题的文章,并尝试编写自己的小代码。所以我所做的是一个小的“C”程序,它接受字符参数并运行直到出现段错误。所以我提供参数,直到收到一条消息,提示我用“A”(即41)覆盖了返回地址。我在其中复制输入字符串的缓冲区字符长度为[5]。这是我在gdb中所做的。run$(perl-e'print"A"x32;')ProgramreceivedsignalSIGSEGV,Segmentationfault.0x0000000000400516inmain(argc=Cannotaccessmemoryataddress0x4141

c++ - 在 C++ 中如何发生堆栈下溢?

在调用和从方法调用返回的情况下,在C++中导致堆栈下溢的简单示例是什么?我熟悉调用约定,即thiscall、stdcall和cdecl以及它们清理堆栈的方式。编译器生成的代码不会自动处理堆栈下溢吗?哪些情况会使我遇到堆栈下溢问题? 最佳答案 我可以看到这实际发生的唯一方法是,如果您声明一个函数以使用stdcall(或任何其他指定被调用者清理堆栈的调用约定),然后通过调用该函数指定为cdecl的函数指针(或调用者清理堆栈的任何其他调用约定)。如果你这样做,被调用的函数会在返回之前弹出堆栈,然后调用者也会弹出堆栈,导致下溢和可怕的事情。

c++ - 如何检测 double 浮点上溢和下溢?

我有以下变量:doubledblVar1;doubledblVar2;它们的值可能很大,但小于doublemax.我对上述变量有各种算术,比如加法、乘法和幂:doubledblVar3=dblVar1*dblVar2;doubledblVar4=dblVar1+dblVar2;doubledblVar5=pow(dblVar1,2);在以上所有内容中,我必须检查上溢和下溢。如何在C++中实现这一点? 最佳答案 很大程度上取决于上下文。要完美便携,您必须检查之前操作,例如(补充):if((astd::numeric_limits::m

java - Java 如何处理整数下溢和上溢以及如何检查它?

Java如何处理整数下溢和上溢?在此基础上,您将如何检查/测试这种情况是否正在发生? 最佳答案 如果溢出,它会回到minimumvalue并从那里继续。如果它下溢,它会返回到maximumvalue并从那里继续。您可以按如下方式预先检查:publicstaticbooleanwillAdditionOverflow(intleft,intright){if(right(您可以将int替换为long以对long执行相同的检查)如果您认为这种情况可能经常发生,请考虑使用可以存储更大值的数据类型或对象,例如long或者java.math.

c++ - C/C++ 中的类型转换到底是什么?

C/C++中的类型转换到底是什么?编译器如何检查是否需要(并且有效)显式类型转换?它是否比较一个值所需的空间?例如,如果我有:inta;doubleb=15.0;a=(int)b;如果我没记错的话,double值比整数(4字节)需要更多空间(是8字节吗?!)。并且两者的内部表示是完全不同的(补二/尾数)。那么内部会发生什么呢?这里的例子很简单,但是在C/C++中有很多类型转换。编译器如何知道(或程序员)我是否可以转换,例如FOO到BAR? 最佳答案 类型转换基本上是从一种类型到另一种类型的转换。它可以是隐式的(即由编译器自动完成,可

c++ - C/C++ 中的类型转换到底是什么?

C/C++中的类型转换到底是什么?编译器如何检查是否需要(并且有效)显式类型转换?它是否比较一个值所需的空间?例如,如果我有:inta;doubleb=15.0;a=(int)b;如果我没记错的话,double值比整数(4字节)需要更多空间(是8字节吗?!)。并且两者的内部表示是完全不同的(补二/尾数)。那么内部会发生什么呢?这里的例子很简单,但是在C/C++中有很多类型转换。编译器如何知道(或程序员)我是否可以转换,例如FOO到BAR? 最佳答案 类型转换基本上是从一种类型到另一种类型的转换。它可以是隐式的(即由编译器自动完成,可